﻿using CQRSFramework.Events;
using CQRSFramework.Events.Impl;
using System.Collections.Generic;

namespace CQRSFramework.Domains
{
    public interface IAggregateRoot
    {
        string UniqueAggregateRootId { get; }
        int Version { get; }
        void AcceptDomainEvents(int version);
        IEnumerable<IDomainEvent> GetUnCommittedDomainEvents();
        void LoadFromHistory(IEnumerable<DomainEventStream> history);
    }
}
